package com.lq.javawebTest.controller;

import com.lq.JDBC.Dao.UserDao;
import com.lq.JDBC.Dao.impl.UserDaoImpl;
import com.lq.JDBC.entity.User;
import com.lq.javawebTest.core.*;
import com.lq.javawebTest.core.entity.HttpRequest;
import com.lq.javawebTest.core.entity.HttpResponse;
import com.lq.javawebTest.core.entity.Session;
import com.lq.javawebTest.core.inter.Servlet;


public class LoginServlet implements Servlet {
    @Override
    public void service(HttpRequest request, HttpResponse response) {
        try{
            String username = request.getParameter("username");

            String password = request.getParameter("password");

            UserDao userDao = new UserDaoImpl();
//            int i = 1/0;
            User user = userDao.queryByName(username, User.class);
            //判断是否已经存在这个用户名
            if( user == null ){
                HttpResponse.fail(response,"用户不存在");

            }else{
                //用户存在，密码相等
                if( user.getPassword().equals(password) && user.getPassword() != null ){
                    HttpResponse.success(response, "登陆成功！！！");
                    if(request.getHeader("Cookie")!=null){
                        //从给他分配的cookie中获取id,并设置响应的session
                        String cookie = request.getHeader("Cookie");
                        String sessionId = cookie.split("=")[1];
                        Session session = Container.getSession(sessionId);//这里从session中获取的内容是object实例
                        session.setAttribute("user",user);//这里把对应的user实例赋值给了这个对应session中object
                        //所以一个cookieid就能对应一个user就是一个动态显示的状态
                        //由于网站只对一个浏览器分配了一个cookie,所以如果我们先登录一个账户，然后又登陆另一个账户，后一个账户
                        //就会覆盖掉前一个账户信息，而显示后一个账户的内容（算是程序的一个小bug吧）
                    }
                }
            }
        }catch(Exception e){
            e.printStackTrace();
            HttpResponse.fail(response,"登陆发生异常！！！");
        }

    }
}
